package com.chenyu.upload.base;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 文件类型枚举
 * 1.实现文件类型与文件后缀对应
 * 2.实现后端类型校验
 *
 * @author yyx
 * @date 2018/7/23 16:27
 */
public enum ContentTypeEnum {

    /**
     * 允许上传的视频
     **/
    MP4("video/mp4", ".mp4"),
    AVI("video/avi", ".avi"),
    WMV("video/x-ms-wmv", ".wmv"),
    /**
     * 允许上传的图片
     **/
    BMP("image/bmp", ".bmp"),
    GIF("image/gif", "gif"),
    PNG("image/png", ".png"),
    JPEG("image/jpeg", ".jpeg"),
    ICON("image/x-icon", ".icon");

    private String contentType;//文件类型

    private String suffix;//文件后缀

    ContentTypeEnum(String contentType, String suffix) {
        this.contentType = contentType;
        this.suffix = suffix;
    }

    /**
     * 根据文件类型获取文件后缀
     *
     * @param contentType
     * @return
     */
    public static String getSuffixName(String contentType) {
        for (ContentTypeEnum c : ContentTypeEnum.values()) {
            if (c.contentType.equals(contentType)) {
                return c.suffix;
            }
        }
        return null;
    }

    /**
     * 根据文件后缀获取文件类型
     *
     * @param suffix
     * @return
     */
    public static String getContentTypeName(String suffix) {
        for (ContentTypeEnum c : ContentTypeEnum.values()) {
            if (c.suffix.equals(suffix)) {
                return c.contentType;
            }
        }
        return null;
    }

    /**
     * 获取允许的所有文件类型后缀
     *
     * @return
     */
    public static List<String> getSuffixs() {
        return Arrays.stream(ContentTypeEnum.values()).map(x -> x.suffix).collect(Collectors.toList());
    }

    /**
     * 获取允许的所有文件类型
     *
     * @return
     */
    public static List<String> getContentTypes() {
        return Arrays.stream(ContentTypeEnum.values()).map(x -> x.contentType).collect(Collectors.toList());
    }

}
